﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ECommerce.Model.Contabilidad.Carritos
{
    public class Carrito : ECommerce.Model.Objeto
    {
        private ECommerce.Model.Contabilidad.Carritos.ItemCarrito[] itemsCarrito;
        public ECommerce.Model.Contabilidad.Carritos.ItemCarrito[] ItemsCarrito
        {
            get { return itemsCarrito; }
            set { itemsCarrito = value; }
        }

        internal void LoadItemsCarrito()
        {
            this.ItemsCarrito = ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.GetItemsCarritoByCarritoId(this.Id);
            if (ItemsCarrito == null)
            {
                this.ItemsCarrito = ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.GetItemsCarritoByCarritoId(this.Id);
                if (ItemsCarrito.Length > 0)
                    ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.SetItemsCarritoByIdCarrito(this.ItemsCarrito, this.Id);
            }
        }
        public void Add(ECommerce.Model.Contabilidad.Carritos.ItemCarrito ItemCarrito)
        {
            ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.AddItemCarritoToCarrito(ItemCarrito, this);
            ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.DelItemsCarritoByIdCarrito(this.Id);
        }
        public override void Load(int ident)
        {
            base.Load(ident);
            this.Load(ECommerce.DAO.Cache.Contabilidad.Carritos.Carrito.GetCarritoById(ident));
            if (this.Id==0)
            {
                this.Load(ECommerce.DAO.SQL.Contabilidad.Carritos.Carrito.GetCarritoById(ident));
            }
        }
        public void Load(ECommerce.Model.Contabilidad.Carritos.Carrito Carrito)
        {
            if (Carrito != null)
            {
                base.Load(Carrito);
                this.ItemsCarrito = ECommerce.DAO.Cache.Contabilidad.Carritos.ItemCarrito.GetItemsCarritoByCarritoId(Carrito.Id);
                if (ItemsCarrito == null || ItemsCarrito.Length == 0)
                    this.ItemsCarrito = ECommerce.DAO.SQL.Contabilidad.Carritos.ItemCarrito.GetItemsCarritoByCarritoId(Carrito.Id);
            }
        }
        public override void Save()
        {
            base.Save();
            this.Id = ECommerce.DAO.SQL.Contabilidad.Carritos.Carrito.SetCarrito(this);
        }
    }
}
